class Person {
  String name;
  int age;

  Person(this.name, this.age);
  void show() {
    print('父类里的show方法，${this.name} --- ${this.age}');
  }
}

class Student extends Person {
  String? sex;

  // 利用super关键字，我们可以把与父类重复的属性交给父类的构造函数去处理，使用方式参考下方代码
  Student(String name, int age, String sex) : super(name, age) {
    this.sex = sex;
  }

  // 复写父类的方法，下面这个标识@override可以不加，但是一般还是加上更规范一些
  @override
  void show() {
    print('子类里的show方法，${this.name} --- ${this.age}---${this.sex}');
    // super.show();//当然，子类其实可以通过super点的方式调用父类里的方法
  }
}

void main() {
  var s1 = new Student('mika', 33, '男');
  // 当父类和子类都有某个方法的时候，会优先执行子类的
  s1.show();
}
